This application relates to the processing of data, and more particularly, to the encoding and decoding of data sequences in a reduced complexity bound manner.
It is common to compress a sequence of data (i.e. binary or M-ary information) for sending from a first location to a second location. For example, video data may be generated at the first location, where the data represents a video conference call. The data is typically converted to a sequence of events (i.e. binary events). To deliver the sequence of events to the second location, it is desirable to compress, or encode, the sequence of events to a sequence of information, to reduce the time necessary for transmission of the event sequence to the second location. An arithmetic encoder is typically utilized to compress the sequence of events (i.e. the binary events) to an information sequence of information pieces (i.e. binary bits of information) for sending to the second location. The greater the compression, or encoding efficiency, of the information sequence, the greater the transmission rate of the information sequence to the second location.
Compression is achieved by generating less than one information piece per event being encoded, where ratios of events to information pieces being encoded may reach 64:1 or even 128:1, depending on the probability distribution of the events. An arithmetic decoder is used at the second location for decompressing the information sequence to the event sequence, thus allowing the video data representing the video conference call to be presented to an individual at the second location.
Data compression is used for other purposes as well. Another such use may be to increase video quality given an amount of storage media for storing the event sequence. Encoders may be utilized in this example to store video (i.e. representing a movie) on a Compact Disc Read Only Memory (CD-ROM) or Digital Video Disc Read Only Memory (DVD-ROM), or any other storage media including optical, magnetic or otherwise, for replay at a later time. As discussed above, the ratio of events to information pieces encoded may reach 64:1 or 128:1 depending on the probability distribution of the events. At the later time, a decoder is used to decompress the information sequence to the event sequence, thereby allowing the corresponding video or other data to be used.
However, as encoding efficiency increases at the encoder, a greater amount of processing (i.e. decoding operations) are required at the decoder in order to decode the sequence of information pieces of a given length to the event sequence. Such increased processing requirement may be detrimental, especially where it is desired that the event sequence be provided in a real-time fashion. For example, in the case of an event-sequence representing video, real-time indicates that for the information sequence representing a time period (i.e. 1 second) of video, that the decoder is capable of receiving the information sequence, and decoding the information sequence to the corresponding event sequence within the time period. Sometimes, such real-time processing is not possible with the increased efficiency schemes utilized in conventional encoders.
This invention is directed to solving one or more of the problems discussed above in a novel and simple manner.